#ifndef GAMEROOM_H
#define GAMEROOM_H

#include <QWidget>
#include <QSound>

//枚举蛇的移动方向
enum class SnakeDirect
{
    UP = 0,
    DOWN,
    LEFT,
    RIGHT
};

class GameRoom : public QWidget
{
    Q_OBJECT
public:
    explicit GameRoom(QWidget *parent = nullptr);

    void paintEvent(QPaintEvent *event);

    //蛇的向上方法
    void moveUp();

    //蛇的向下方法
    void moveDown();

    //蛇的向左方法
    void moveLeft();

    //蛇的向右方法
    void moveRight();

    //判断游戏是否结束
    bool checkFail();

    //创造食物
    void createNewFood();

    //设置蛇速度
    void setTimeout(int timeout){moveTimeout = timeout;}

private:
    //表示蛇身体节点的宽度
    const int KSnakeNodeWidth = 20;
    //表示蛇身体节点的宽度
    const int KSnakeNodeHeight = 20;
    //蛇默认的移动速度
    const int KDefaultTimeout = 200;
    //表示贪吃蛇链表
    QList<QRectF> snakeList;
    //表示食物节点
    QRectF foodRect;
    //蛇的默认移动方向
    SnakeDirect moveDirect = SnakeDirect::UP;
    //定时器
    QTimer* timer;
    //表示是否开始游戏
    bool isGameStart = false;

    QSound* sound;

    int moveTimeout = KDefaultTimeout;
};

#endif // GAMEROOM_H
